<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
    <head>
        <title>org.gephi.filters.spi</title>
    </head>
    <body>
        <p>
            Interfaces for creating new filter classes.
        </p>
        <h3>Create a new Filter</h3>
        <ol>
            <li>
                Create a new module and set <code>FilterAPI</code>, <code>GraphAPI</code>
                and <code>UtilitiesAPI</code> as dependencies.
            </li>
            <li>
                Create a new builder class by implementing <code>FilterBuilder</code>,
                this class is basically a factory that will create filter instances
                on demand.
            </li>
            <li>
                Add <b>@ServiceProvider</b> annotation to your builder, that it can
                be found by the system. Set <code>FilterBuilder</code> as the
                annotation parameter.
            </li>
            <li>
                Create a new class that implements either <code>NodeFilter</code>,
                <code>EdgeFilter</code> or <code>ComplexFilter</code>.
            </li>
            <li>
                Fill <code>getProperties()</code> method in your filter, it should
                expose all properies that can be set by users and have an influence
                on the filter execution.
            </li>
            <li>
                If you need a user interface for your filter, fill
                <code>getPanel()</code> method in the builder.
            </li>
        </ol>
    </body>
</html>
